# -*- coding: utf-8 -*-
#
# File: Resolucao.py
#
# Copyright (c) 2006 by IBICT
# Generator: ArchGenXML Version 1.5.0
#            http://plone.org/products/archgenxml
#
# GNU General Public License (GPL)
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301, USA.
#

__author__ = """IBICT <cadu@ibict.br>"""
__docformat__ = 'plaintext'

from AccessControl import ClassSecurityInfo
from Products.Archetypes.atapi import *
from Products.Archetypes.SQLStorage import *
from Products.SIGFS.config import *

##code-section module-header #fill in your manual code here
from Acquisition import aq_parent, aq_inner
from Products.Archetypes import transaction
##/code-section module-header

schema = Schema((

    StringField(
        name='subacao',
        serchable="1",
        widget=SelectionWidget(
            label="Subação",
            description="Faça uma busca sobre a subação relacionada à Resolução. Este campo não é obrigatório pois nem toda Resolução está relacionada a uma subação.",
            format="select",
            label_msgid='SIGFS_label_subacao',
            description_msgid='SIGFS_help_subacao',
            i18n_domain='SIGFS',
        )
    ),

    DateTimeField(
        name='prazo_pendencia_resolucao',
        default="DateTime()",
        serchable="1",
        required=1,
        widget=CalendarWidget(
            label="Prazo de pendência",
            description="Informe a data durante a qual os revisores poderão inserir comentários sobre a Resolução, antes de publicá-la.",
            format="%d/%m/%Y",
            date_only="1",
            show_hm=False,
            label_msgid='SIGFS_label_prazo_pendencia_resolucao',
            description_msgid='SIGFS_help_prazo_pendencia_resolucao',
            i18n_domain='SIGFS',
        )
    ),

    BooleanField(
        name='enviar_email_resolucao',
        index="FieldIndex",
        serchable="1",
        widget=BooleanWidget(
            label="Enviar email para os revisores",
            description="Selecione este campo para que quando a Resolução estiver no estado pendente seja enviado um email para os convocados presentes na Reunião revisarem o conteúdo da Resolução. Se este não for selecionado não realizará a ação de envio de email.",
            label_msgid='SIGFS_label_enviar_email_resolucao',
            description_msgid='SIGFS_help_enviar_email_resolucao',
            i18n_domain='SIGFS',
        )
    ),

    StringField(
        name='responsavel',
        default="Comitê Gestor",
        serchable="1",
        widget=StringWidget(
            label="Responsável pela definição da resolução",
            description="Informe o responsável que definiu a resolução. Se esta resolução está atrelada a alguma reunião não é necessário seu preenchimento.",
            label_msgid='SIGFS_label_responsavel',
            description_msgid='SIGFS_help_responsavel',
            i18n_domain='SIGFS',
        )
    ),

    TextField(
        name='descricao_resolucao',
        allowable_content_types=('text/plain', 'text/structured', 'text/html', 'application/msword',),
        serchable="1",
        default_output_type='text/html',
        widget=RichWidget(
            label="Descrição",
            description="Informe a descrição para a resolução.",
            label_msgid='SIGFS_label_descricao_resolucao',
            description_msgid='SIGFS_help_descricao_resolucao',
            i18n_domain='SIGFS',
        ),
        required=1
    ),

    TextField(
        name='observacao',
        serchable="1",
        widget=TextAreaWidget(
            label="Observação",
            description="Informe se esta resolução possui alguma observação.",
            label_msgid='SIGFS_label_observacao',
            description_msgid='SIGFS_help_observacao',
            i18n_domain='SIGFS',
        )
    ),

),
)

##code-section after-local-schema #fill in your manual code here
##/code-section after-local-schema

Resolucao_schema = BaseFolderSchema.copy() + \
    schema.copy()

##code-section after-schema #fill in your manual code here
##/code-section after-schema

class Resolucao(BaseFolder):
    """
    """
    security = ClassSecurityInfo()
    __implements__ = (getattr(BaseFolder,'__implements__',()),)

    # This name appears in the 'add' box
    archetype_name = 'Resolução'

    meta_type = 'Resolucao'
    portal_type = 'Resolucao'
    allowed_content_types = ['Atividade']
    filter_content_types = 1
    global_allow = 0
    content_icon = 'form_icon.gif'
    immediate_view = 'base_view'
    default_view = 'resolucao_view'
    suppl_views = ()
    typeDescription = "Cada Ata possui uma ou várias Resoluções referentes ou não a uma ação/subação do Fundo Setorial. Estas Resoluções são itens que complementam a Ata. Antes de publicá-la, a Resolução entrará em revisão, se o campo 'Enviar email para os revisores' estiver selecionado, os convocados presentes na Reunião revisarão o conteúdo da Resolução, logo após comentários esta pode ser publicada."
    typeDescMsgId = 'description_edit_resolucao'
    allow_discussion = 1


    actions =  (


       {'action': "string:${object_url}/resolucao_view",
        'category': "object",
        'id': 'view',
        'name': 'View',
        'permissions': ("View",),
        'condition': 'python:1'
       },


       {'action': 'string:${object_url}/folder_localrole_form',
        'category': "object",
        'id': 'sharing',
        'name': 'Sharing',
        'permissions': ("SIGFS: Add Resolucao",),
        'condition': 'python:1'
       },


       {'action': "string:${object_url}/resolucao_edit",
        'category': "object",
        'id': 'edit',
        'name': 'Edit',
        'permissions': ("Modify portal content",),
        'condition': 'python:1'
       },


    )

    _at_rename_after_creation = True

    schema = Resolucao_schema

    ##code-section class-header #fill in your manual code here
    ##/code-section class-header

    # Methods

    # Manually created methods

    security.declarePrivate('_renameAfterCreation')
    def _renameAfterCreation(self, check_auto_id=False):
        """Renomeia o objeto com id numérico sequencial de 6 casas decimais."""
	parent_ids = self.aq_inner.aq_parent.objectIds()
        try:
          new_id = 'rs'+'%0.4i' % len(parent_ids)
          # Usando o portal_factory tem que comitar a subtransacao
          transaction.savepoint(optimistic=True)
	  self.setId(new_id)
	except:
	  new_id = 'rs'+'%0.4i' % len(parent_ids) + str(random.randint(1,1000))
          # Usando o portal_factory tem que comitar a subtransacao
          transaction.savepoint(optimistic=True)
	  self.setId(new_id)



registerType(Resolucao, PROJECTNAME)
# end of class Resolucao

##code-section module-footer #fill in your manual code here
##/code-section module-footer



